package ModuleFour.task04;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 使用基于tcp协议的编程模型实现将UserMessage类型对象由客户端发送给服务器
 * 服 务 器接 收到 对象 后判 断 用户 对象 信息 是否 为 "admin" 和 "123456"，
 * 若 是则 将 UserMessage 对象中的类型改为"success"，否则将类型改为"fail"并回发给客户端，客户 端接收到服务器发来的对象后判断并给出登录成功或者失败的提示。
 *
 *   其中 UserMessage 类的特征有：类型(字符串类型) 和 用户对象(User 类型)。
 *
 *
 *                 UserMessage tum = new UserMessage("check", new User("admin", "123456"));
 */
public class TCPServerTest {

    public static void main(String[] args) {
        ServerSocket ss = null;
        Socket s = null;
        BufferedInputStream bis = null;
        ObjectInputStream ois = null;

        try {
            //1、创建ServerSocket类型的对象并提供端口号
            ss = new ServerSocket(8888);
            //2、等待客户端的连接请求，调用accept方法
            System.out.println("等待客户端的连接！");
            s = ss.accept();
            System.out.println("客户端连接成功！");
            //3、使用输入输出流进行通信
            //实现对客户端发送内容的接收

            ois = new ObjectInputStream(s.getInputStream());
            Object readObject = ois.readObject();
            System.out.println("读取到的内容是" + readObject);


        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            //4、关闭Socket

            if (ss != null) {
                try {
                    ss.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


    }



}
